As used herein “content” is used to include audio, video and any other form of data including any multimedia data. The terms video and content are used interchangeably herein. As used herein, “/” denotes alternative names for the same or similar components or structures. That is, a “/” can be taken as meaning “or” as used herein.
Wireless local area networks (WLANs), because of their flexibility and low cost, have been used extensively in homes, hotels, on campus and other hot spots such as airports and train stations. While in most cases, users connect to a WLAN to browse websites or check e-mails, there is an increasing demand for WLANs to support real time multimedia streaming. However, a wireless channel may suffer from multi-path fading and interferences, which may cause random and burst packet losses and impact the content playback quality of a streaming application. To improve reliability, error correction schemes such as forward error correction (FEC) and/or automatic repeat request (ARQ) can be used. In FEC, parity packets are sent with the original/source media packets/data. However, as each mobile device may experience different channel conditions, it is difficult to decide how much FEC to send. Lower FEC may cause poor protection and lost packets/data may not be able to be recovered. Higher FEC may cause more overhead and waste network bandwidth. The present invention describes an adaptive method, which give a client/mobile device the appropriate protection while at the same time using the bandwidth resource efficiently.
Using ARQ for error correction, a client/mobile device's data/packet recovery may suffer a long round trip time delay. In multicast applications, ARQ may also result in feedback explosion problem. However, when the round trip time delay is short, and appropriate feedback suppression algorithm is used, ARQ is still a feasible error correction scheme for real time content streaming.
FEC is an efficient way to improve reliability for multicast applications. A variety of FEC schemes can be employed at the application layer for packet level error correction. The candidates include Pro-MPEG with/without random interleaving and Reed-Solomon (RS). All FEC schemes have advantages and disadvantages. Pro-MPEG FEC is a very light scheme since it only employs XOR operation but its error correction capability is correspondingly limited. Pro-MPEG cannot correct some error patterns even if the packet losses are not high. RS has better error correction capability than XOR-based FEC schemes in most of cases, since it works independently of error patterns. The cost of employing RS is increased computational resources. Nevertheless, in some cases RS has lower performance than XOR-based FEC schemes, since RS (n, k) code completely fails in cases of more than n-k packet losses out of n encoded packets in a FEC coding block. XOR based FEC can possibly still correct part of the missing packets/data when there are more than n-k packet losses.
The problem with FEC is to decide how much FEC to send in the first place. In a multicast application, different mobile devices may have different channel conditions and loss rates. A single static FEC cannot satisfy the requirements of all the mobile devices. Layered FEC is introduced in the prior art coupled with scalable source coding to improve the bandwidth usage efficiency and quality of service in wired networks. However, prior art schemes did not consider ARQ retransmission. If the packet loss for a receiver is more than the capability of the FEC code, the lost packets cannot be recovered. Furthermore, a receiver cannot get the exact amount of FEC packets it needs because it gets the FEC in layers, in a discrete number of FEC packets. In addition, the prior art layered scheme did not consider the synchronization between multiple tracks of a multimedia session. For example, in a multimedia session, often there is an audio track and a video track, the video track has much higher bit rate than the audio track, if the same FEC block size is used, it will take much longer time for the audio track to fill up the FEC buffer.
In one prior art solution, the maximum number of packets (maxK) that will be used for FEC encoding in a FEC block is set. When the number of video (audio) packets for a track in the buffer reaches maxK, the FEC encoding based on these video (audio) packets is performed. At the same time, the FEC encoding based on the other tracks of the audio (video) media packets is also performed, no matter how many packets is in the other audio (video) track buffer. Because both N and K are not fixed for different FEC blocks, N and K must be included in the FEC header and the information, thereby, passed to the client.
In the prior art ARQ has been used in multicast when the average round trip time from clients to server is low and the number of clients in a multicast session is small. Often feedback suppression is implemented to avoid the feedback explosion problem. In prior art hybrid ARQ schemes, a client/mobile device sends request for the number of parity packets it needs to decode a FEC block instead of the sequence number of the original media packets. The retransmitted parity packets are multicast to all the clients in the multicast session. Parity packets can be used by different clients/mobile devices to recover different losses.
Different scenarios may use different error correction schemes. In some cases, FEC may be more efficient while in other cases, ARQ maybe a better choice. It would be advantageous to provide a single solution for all the application scenarios.